package com.zjq.designpatterns.creation.simplefactory.code;/*
 * 版权信息: 北京千⾥马网信科技有限公司</br>
 * Copyright ©2008-2018. All rights reserved. 京ICP备16007318号
 */

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

/**
 * 应用层，或者客户端代码
 * @author jessie
 * @version 1.0
 * @date 2021/1/14
 */
public class Test {
    public static void main(String[] args) {
        //version 1. 普通做法
//        Video video = new JavaVideo();
//        video.produce();
        //version 2. 因为应用层依赖JavaVedio或者PythonVedio, 我们可以把整个生产过程放到一个类里面，使我们应用类不直接使用具体的实现类
        //这就是简单工厂的由来
//        VideoFactory videoFactory = new VideoFactory();
//        Video video = videoFactory.getVideo("java");
//        if(video == null){
//            return;
//        }
//        video.produce();

        //version 3   通过反射机制
        VideoFactory2 videoFactory2 = new VideoFactory2();
        Video video = videoFactory2.getVideo(JavaVideo.class);
        video.produce();
    }
}
